<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // class Person {
        //     //公有属性
        //     name;
        //     //私有属性
        //     #
        //     age;#
        //     weight;
        //     constructor(name, age, weight) {
        //         this.name = name;
        //         this.#age = age;
        //         this.#weight = weight;
        //     }
        //     intro() {
        //         console.log(this.name);
        //         console.log(this.#age);
        //         console.log(this.#weight);
        //     }
        // }
        // const girl = new Person('小红', 18, '45kg');
        // girl.intro();

        //2. allSettled
        //声明两个promise对象
        const p1 = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('商品数据-1')
            }, 1000)
        })
        const p2 = new Promise((resolve, reject) => {
            setTimeout(() => {
                // resolve('商品数据-2')
                // reject('出错了')
            }, 1000)
        })
        const result = Promise.allSettled([p1, p2]); //始终都是返回成功（适用于批量异步任务中都想得到结果，则用allSettled）
        // console.log(result);

        const res = Promise.all([p1, p2]) //2个任务都成功，它的状态才成功（要求每个异步任务都成功才能往下执行，则用all）
            // console.log(res);

        //3. String.prototype.marchAll  得到正则批量匹配的结果（适合数据批量提取类、爬虫的项目，从页面中提取数据）
        let str = `<ul>
        <li>
            <a>肖生克的救赎</a>
            <p>上映时间:1994-09-10</p>
        </li>
        <li>
            <a>阿甘正传</a>
            <p>上映时间:1994-07-06</p>
        </li>
    </ul>`;
        //声明正则
        const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs
        const result1 = str.matchAll(reg);
        // console.log(result1); //返回结果里有next方法，是一个可迭代对象，所以这里可以使用for循环遍历或者扩展运算符展开
        // for (let v of result1) {
        //     console.log(v);
        // }   

        //使用扩展运算符 进行展开
        const arr = [...result1]
        console.log(arr); //获取一个二维数组

        //4.可选链操作符
        //?.
        function main(config) {
            const dbHost = config && config.db && config.db.host;
            // const dbHost = config ? .db ? .host;
            console.log(dbHost);
        }
        main({
            db: {
                host: 'http://localhost:8080'
            }
        })
    </script>
</body>

</html>